SETVER
원래 도스용 프로그램들은 버전이 맞지 않으면 실행할 수 없다. 그렇다고 이전 버전의 도스용 프로그램을 전혀 실행할 수 없다는 것을 의미하지는 않는다. 즉, DOS라는 운영체제가 응용 프로그램이 실행되는데 필요한 버전이라고 알려주면 다른 버전의 도스용 프로그램이 잘 실행된다. 이런 기능을 하는 것이 바로 SETVER 프로그램이다.
SETVER 명령어는 DOS가 버전이 다른 도스용 프로그램이 잘 실행되도록 하기 위해 운영 체제에 보고하는 버전표를 메모리에 탑재하거나 버전표의 목록을 나타내고, 버전표 목록을 추가 혹은 삭제하기 위하여 사용한다.
버전표를 메모리에 로드하기 위해서는 Config.sys 파일 안에서 Device 명령어를 사용하고, 버전표의 목록을 나타내거나 파일을 버전표에 추가 혹은 삭제하기 위해서는 프롬프트 상에서 프롬프트 명령어로 사용한다.
프롬프트 상에서 SETVER 명령어를 사용하는 것은 버전표의 목록을 나타내거나 버전표에 파일 목록을 추가 혹은 삭제하는 작업을 할 수 있다.
Config.sys에서 버전표를 로드하는 방법은 여기를 참조하기 바란다.
■ 명령어 위치
윈도우가 설치되어 있는 하드디스크(C:\Windows)에 실행 파일 형태로 존재하는 외부 명령어
■ 사용법
현재 설정된 버전표를 표시할 때
SETVER [drive:path]
버전표에 목록을 추가할 때,
SETVER [drive:path] filename n.nn
버전표에서 목록을 삭제할 때,
SETVER [drive:path] filename /DELETE [/QUITE]
■ 옵션 및 매개변수

drive:path | SETVER.EXE 파일이 있는 경로를 지정한다.
filename | 사용자가 버전표에 추가하거나 버전표에서 삭제할 프로그램의 실행 파일 이름을 지정한다. 파일을 지정할 때 EXE 파일과 COM 파일만 지정할 수 있고, 와일드 카드를 사용할 수 없다.
n.nn | 사용자가 지정한 프로그램이 실행될 수 있는 DOS 버전을 지정한다. 예를 들어 5.0 혹은 6.02 등이다.
/delete 혹은 /d | 사용자가 지정한 프로그램 파일에 대한 목록을 버전표에서 삭제한다. 이 옵션을 /d로 축약하여 사용할 수 있다.
/quite 혹은 /q | 버전표에서 프로그램 목록이 삭제되는 동안 메시지가 나타나지 않도록 한다.

■ 참고 사항
☞ 버전표를 메모리에 탑재하기
SETVER 명령어를 사용하기 전에 버전표가 CONFIG.SYS에서 DEVICE 혹은 DEVICEHIGH 명령어를 사용하여 메모리 안에 탑재되어야만 한다.
☞ 버전표 사용하기
DOS 이전 버전에서 실행되도록 개발된 많은 프로그램들이 DOS에서 정확하게 실행될 것이다.
그러나 몇몇 응용 프로그램은 그것의 이름이 버전표에 포함되지 않는 한 올바르게 실행되지 않는 경우도 있다.
버전표는 응용 프로그램이 비록 상위 버전의 DOS에서 실행될지라도 그 프로그램이 설계된 버전에서 실행한다고 인식하도록 프로그램을 속이는 것이다.
버전표를 사용하면 대부분의 DOS용 프로그램이 실행된다. 그러나 그 응용 프로그램이 DOS와 호환되지 않는 경우에는 이러한 문제를 해결할 수 없다.
즉, 해당 버전에서 실행되도록 설계된 프로그램인지 확인할 수 없는 프로그램의 경우에는 시스템에 심각한 문제를 야기할 수 있다.
☞ 버전표 변경 시의 메시지
SETVER 명령어가 버전표에서 지정된 프로그램을 정상적으로 갱신하였다면 다음과 같이 버전표가 성공적으로 갱신되었고, 변경된 버전표는 다음에 컴퓨터를 시동한 때부터 유효하다는 메시지가 나타난다.
Version table successfully updated
The version change will take effect the next time you restart your system
만약, 버전표에 목록을 추가할 때 마이크로소프트에 의해 확인되지 않는 프로그램을 추가하는 경우에는 다음과 같이 확인되지 않은 프로그램으로 데이터 손실의 위험이 있다는 경고 메시지가 나타난다.
WARNING - Contact your software vendor for information about whether a
specific program works with MS-DOS version 7.0. It is possible that
Microsoft has not verified whether the program will successfully run if
you use the SETVER command to change the program version number and
version table. If you run the program after changing the version table
in MS-DOS version 7.0, you may lose or corrupt data or introduce system
instabilities. Microsoft is not responsible for any loss or damage, or
for lost or corrupted data.
Version table successfully updated
The version change will take effect the next time you restart your system
☞ 버전표를 갱신한 후에 재시작하기
버전표에 프로그램 목록을 추가하거나 삭제함으로써 버전표를 갱신하였으면 컴퓨터를 재시동한 다음에만 사용할 수 있다. 따라서, 변경된 버전표를 즉시 사용하려면 컴퓨터를 재시동하여야 한다.
☞ 윈도우 ME에서 DOS용 프로그램을 위해 제공하는 버전표 목록
윈도우 ME에서 도스용 프로그램을 위해 제공하는 버전표에는 다음과 같은 프로그램 파일 목록이 포함되어 있다.

파일 이름 | 버전 번호 |  | 파일 이름 | 버전 번호
KERNEL.EXE | 5.00 |  | NETX.COM | 5.00
NETX.EXE | 5.00 |  | NET5.COM | 5.00
BNETX.COM | 5.00 |  | BNETX.EXE | 5.00
EMSNETX.EXE | 5.00 |  | EMSNET5.EXE | 5.00
XMSNETX.EXE | 5.00 |  | XMSNET5.EXE | 5.00
DOSOAD.SYS | 5.00 |  | REDIR50.EXE | 5.00
REDIR5.EXE | 5.00 |  | REDIRALL.EXE | 5.00
REDIRNP4.EXE | 5.00 |  | EDLIN.EXE | 5.00
BACKUP.EXE | 5.00 |  | ASSIGN.COM | 5.00
EXE2BIN.EXE | 5.00 |  | JOIN.EXE | 5.00
RECOVER.EXE | 5.00 |  | GRAFTABL.COM | 5.00
LMSETUP.EXE | 5.00 |  | STACKER.COM | 5.00
NCACHE.EXE | 5.00 |  | NCACHE2.EXE | 5.00
IBMCACHE.SYS | 5.00 |  | XTRADRV.SYS | 5.00
2XON.COM | 5.00 |  | WINWORD.EXE | 4.10
EXCEL.EXE | 4.10 |  | LL3.EXE | 4.01
REDIR4.EXE | 4.00 |  | REDIR40.EXE | 4.00
MSREDIR.EXE | 4.00 |  | WIN200.BIN | 3.40
METRO.EXE | 3.31 |  | DISKFIX.EXE | 1.00
10NET.COM | 6.20 |  | DBLSPACE.EXE | 6.20
APPEND.EXE | 7.10 |  | BASIC.COM | 7.10
BASICA.COM | 7.10 |  | DISKCOMP.EXE | 7.10
EXTDISK.SYS | 7.10 |  | GRAPHICS.COM | 7.10
FASTOPEN.EXE | 7.10 |  | MODE_DOS.COM | 7.10
PRINT.EXE | 7.10 |  | REPLACE.EXE | 7.10
RESTORE.EXE | 7.10 |  | SCPLUS.EXE | 7.10
SCSIC710.SYS | 7.10 |  | TREE.COM | 7.10
VDISK.SYS | 7.10 |  |  |

☞ 종료 코드
다음은 SETVER 명령어의 실행 중 발생할 수 있는 에러에 대하여 시스템에 돌려주는 에러 수준 종료 코드에 대한 설명이다.

0 | SETVER 명령어가 성공적으로 실행되었다.
1 | 사용자가 적절하지 않은 옵션을 지정했다.
2 | 사용자가 적절하지 않은 파일명을 지정했다.
3 | 명령어를 실행하는데 메모리가 부족하다.
4 | 사용자가 적절하지 않은 버전 번호 형식을 지정했다.
5 | 버전표에서 지정된 프로그램 목록을 찾을 수 없다.
6 | SETVER.EXE 파일을 찾을 수 없다.
7 | 사용자가 적절하지 않은 드라이브를 지정했다.
8 | 사용자가 명령어 라인에 너무 많은 매개변수를 지정했다.
9 | 매개변수 중에서 반드시 지정되어야 할 것 중에 빠진 것이 있다.
10 | SETVER.EXE 파일을 읽는 도중 읽기 에러가 발생하였다.
11 | SETVER.EXE 파일이 변형되었다.
12 | 지정된 SETVER.EXE 파일이 버전표를 지원하지 않는다.
13 | 버전표에 새로운 목록을 추가하기 위한 충분한 공간이 없다.
14 | SETVER.EXE 파일을 쓰는 동안 기록 에러가 발생하였다.

사용자는 SETVER 명령어에 의하여 시스템으로 되돌려진 종료 코드를 처리하기 위하여 배치 프로그램에서 IF 명령어의 errorlevel 매개변수를 사용하여 보다 정확한 에러 원인을 알 수 있다.
■ 사용 예
사용자가 MS-DOS 6.02에서 실행되도록 설계된 USERPROG.EXE 파일을 윈도우 ME의 DOS 환경에서 실행하려면 버전표 내에 버전 6.02를 해석할 수 있도록 목록을 추가해야 한다. 이 때 다음과 같이 SETVER 명령어를 사용한다.
setver userprog.exe 6.02
버전표에서 USERPROG.EXE 목록을 삭제하려면 다음과 같이 SETVER 명령어를 사용한다.
setver userprog.exe /delete
C 드라이브에 있는 버전표의 목록과 그 내용을 열람하려면 다음과 같이 SETVER 명령어를 사용한다.
setver c: